/*
 * ArchivoIni.cpp
 *
 *  Created on: 18/11/2013
 *      Author: gonzalo
 */

#include "ArchivoIni.h"
#include "../common/StringUtils.h"
#include <ios>

using std::toupper;

ArchivoIni::ArchivoIni(std::string file) : ArchivoTexto(file, false){}

MapaIni ArchivoIni::parsearComoIni(std::string file)
{
	ArchivoTexto archivo(file,false);
	MapaIni result;
	std::string linea;
	
	while (archivo.leerLinea(linea))
	{	
		
		if (linea.compare("")==0) continue;
		if (linea.compare(0,1,"#")==0) continue;
		
		std::vector<std::string> claveValor = StringUtils::splitString(linea, '=');
		std::string clave = StringUtils::trim( claveValor[0] );
		std::string valor = StringUtils::trim( claveValor[1] );

		result.insert( ClaveValorIni( clave,valor) );
		
	}
	return result;
}

std::string ArchivoIni::getValue(std::string keySearch, bool ignoreCase) {
	std::string linea;
	this->irAlPrincipio();
	while (this->leerLinea(linea)) {
		std::vector<std::string> vec = StringUtils::splitString(linea, '=');
		std::string key = StringUtils::trim(vec[0]);
		std::string value = StringUtils::trim(vec[1]);
		if (StringUtils::equals(key, StringUtils::trim(keySearch),ignoreCase)) {
			return value;
		}
	}
	return "";
}

void ArchivoIni::guardarComoIni(std::string file,MapaIni &mapa)
{
	ArchivoTexto archivo(file,true);
	MapaIni::iterator it;
	std::string nuevaLinea;

	for(it=mapa.begin();it!=mapa.end();it++)
	{
		nuevaLinea= it->first +"="+ it->second+"\n";
		archivo.escribir(nuevaLinea);
	}
}

